﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Ccit.ClassLibrary;

namespace Ccit.SysPlat.Purview
{
    /// <summary>
    /// Description: 系统平台权限菜单 -> 菜单接口
    /// Author: tim 2010-03-02
    /// </summary>
    public interface IRole
    {
        /// <summary>
        /// 获取角色集合
        /// </summary>
        /// <param name="organId">机构Id</param>
        /// <param name="sysRole">是否获取系统角色(获取角色类型 普通 / 系统角色)</param>
        /// <param name="curUserId">当前登录用户Id
        ///     只能修改由本人创建的角色
        /// </param>
        /// <returns></returns>
        List<MsRole> GetRoleList(string organId, eTrueFalse sysRole, string curUserId);

        /// <summary>
        /// 保存角色
        /// </summary>
        /// <param name="msRole">角色信息消息对象</param>
        /// <returns></returns>
        List<string> Save(MsRole msRole);


        /// <summary>
        /// 删除角色
        /// </summary>
        /// <param name="roleId">角色Id</param>
        /// <returns></returns>
        List<string> Delete(string roleId);


        /// <summary>
        /// 校验本机构下的角色是否同名
        /// (但普通角色与系统角色可以重名)
        /// </summary>
        /// <param name="roleId">部门Id</param>
        /// <param name="roleName">部门名称</param>
        /// <param name="organId">机构Id</param>
        /// <param name="sysRole">当前创建的是否系统角色(角色类型:【普通 / 系统】)</param>
        /// <returns></returns>
        bool IsExistSameName(string roleId, string roleName, string organId, eTrueFalse sysRole);


        /// <summary>
        /// 获取角色消息对象
        /// </summary>
        /// <param name="roleId">角色Id</param>
        /// <returns></returns>
        MsRole GetRoleInfo(string roleId);


        /// <summary>
        /// 获取为系统管理员分配角色权限时使用的菜单数据
        /// </summary>
        /// <param name="organId">机构Id</param>
        /// <returns></returns>
        List<MsMenu> GetSysAdminMenus(string organId);


        /// <summary>
        /// 获取为模块管理员分配角色权限时使用的菜单数据
        /// </summary>
        /// <param name="userId">用户Id</param>
        /// <param name="organId">机构Id</param>
        /// <returns></returns>
        List<MsMenu> GetModAdminMenus(string userId,string organId);


        /// <summary>
        /// 根据用户Id获取用户所属的角色Id串
        /// </summary>
        /// <param name="userId">用户Id</param>
        /// <param name="enUserType">用户类型</param>
        /// <param name="organId">机构Id</param>
        /// <returns></returns>
        string GetRoleIdsByUserId(string userId, eUserType enUserType, string organId);

    }
}
